<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	{
		// 1- 构造函数拥有prototype属性，该属性的类型是一个对象。
		// 2- prototype对象拥有属性constructor(构造器)，值即是构造函数。
		// function Box(){
		//
		// }
		//
		// console.log(Box.prototype);
		// console.log(Box.prototype.constructor === Box);// true
	}
	{
		// 3- 如果当前实例中没有指定的属性，那么会沿着原型链进行查找。如果没有找到 ，那么返回undefined
		// Object.prototype.userName = "object";
		// function Box(){
		// 	// this.userName = "lisi";
		// }
		// // Box.prototype.userName = "zhangsan";
		// // const obj = new Box();
		// // console.log(obj.__proto__ === Box.prototype);// true
		// // console.log(Box.prototype.__proto__ === Object.prototype);// true
		// // console.log(Object.prototype.__proto__);// null
		//
		// // console.log(obj.__proto__.__proto__.__proto__);// null
		// // console.log(obj.userName);
		// // console.log(obj.constructor===Box)
		// console.log(Box.userName);
		// console.log(Box.constructor === Function);// Box是通过Function实例化出来的
		// console.log(Box.__proto__ === Function.prototype);
		// console.log(Function.prototype.__proto__ === Object.prototype);
		// console.log(Object.prototype.__proto__)
		// console.log(Box.__proto__.__proto__.__proto__)
	}
	{
		// Array原型对象中拥有属性includes
		Object.prototype.a = 1;
		// let arr = new Array(1,2,3,4);
		let arr2 = [1,2,3,4];// new Array(1,2,3,4)
		// console.log(arr2.__proto__ === Array.prototype)
		console.log(arr2.a);// 无，万物之始也。
	}
</script>
</html>